#!/bin/bash

# 确保脚本在出错时退出
set -e

# 显示彩色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 设置绝对路径
SYNOLOGY_PATH="/volume1/docker/hello-beer-pos"

echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}   Hello Beer POS 系统生产环境部署脚本   ${NC}"
echo -e "${GREEN}=========================================${NC}"

# 检查Docker是否已安装
if ! command -v docker &> /dev/null; then
    echo -e "${RED}错误: Docker未安装。请在群晖控制面板中安装Docker。${NC}"
    exit 1
fi

# 检查Docker Compose是否已安装
if ! command -v docker-compose &> /dev/null; then
    echo -e "${RED}错误: Docker Compose未安装。请在群晖控制面板中安装Docker Compose。${NC}"
    exit 1
fi

# 不再需要拉取代码，因为我们使用预构建镜像
cd $SYNOLOGY_PATH

# 创建必要的目录
echo -e "${GREEN}创建必要的目录...${NC}"
mkdir -p $SYNOLOGY_PATH/logs/nginx $SYNOLOGY_PATH/uploads $SYNOLOGY_PATH/backups $SYNOLOGY_PATH/mysql-data

# 设置目录权限
echo -e "${GREEN}设置目录权限...${NC}"
chmod -R 755 $SYNOLOGY_PATH/logs $SYNOLOGY_PATH/uploads $SYNOLOGY_PATH/backups
chmod -R 777 $SYNOLOGY_PATH/mysql-data

# 检查.env文件是否存在，如果不存在则创建
if [ ! -f "$SYNOLOGY_PATH/.env" ]; then
    echo -e "${YELLOW}未找到.env文件，创建默认配置...${NC}"
    cat > $SYNOLOGY_PATH/.env << EOF
# 数据库配置
DB_PASSWORD=Hello_Beer_2023
DB_NAME=hello_beer

# JWT配置
JWT_SECRET=j8K2p0r5Zt7xW3vA9yB6nM4cD1eF0hG

# 应用配置
NODE_ENV=production
DATABASE_URL=mysql://root:Hello_Beer_2023@db:3306/hello_beer
APP_VERSION=1.0.0
EOF
    echo -e "${GREEN}.env文件已创建，请根据需要修改配置${NC}"
else
    echo -e "${GREEN}已找到.env文件，将使用现有配置${NC}"
fi

# 拉取预构建的镜像
echo -e "${GREEN}拉取预构建的Docker镜像...${NC}"
docker pull binbin1213/hello-beer-frontend:latest
docker pull binbin1213/hello-beer-backend:latest

# 停止并删除现有容器
echo -e "${YELLOW}停止并删除现有容器...${NC}"
docker-compose -f docker-compose.production.yml down

# 启动容器（不构建）
echo -e "${GREEN}启动容器...${NC}"
docker-compose -f docker-compose.production.yml up -d

# 检查容器状态
echo -e "${GREEN}检查容器状态:${NC}"
docker-compose -f docker-compose.production.yml ps

# 完成
echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}   部署完成!   ${NC}"
echo -e "${GREEN}=========================================${NC}"
echo -e "${YELLOW}前端访问地址: http://$(hostname -I | awk '{print $1}'):8081${NC}"
echo -e "${YELLOW}后端API地址: http://$(hostname -I | awk '{print $1}'):3100${NC}"

echo -e "${GREEN}部署已完成，但还未恢复数据库。如需恢复数据库，请上传backup-full.sql并执行:${NC}"
echo -e "${YELLOW}docker cp backup-full.sql hello-beer-db:/tmp/${NC}"
echo -e "${YELLOW}docker exec hello-beer-db sh -c 'mysql -u root -p\"\${DB_PASSWORD}\" \${DB_NAME} < /tmp/backup-full.sql'${NC}"

# 显示后端日志
echo -e "${GREEN}显示后端日志（按Ctrl+C退出）:${NC}"
docker-compose -f docker-compose.production.yml logs -f backend 